﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NumberRecognition.Model
{
    public class Perceptron
    {
        private double[] weights;
        //private double activationLimit;
        private double a = 1; //параметр наклодна сигмоидальной ф-и. Slope Parametr

        public Perceptron(int w)
        {
            weights = new double[w + 1]; // w + 1 - чтобы w[0] был лимитом активации
        }

        public int ActivationFunction(int[] x_)
        {
            int[] x = new int[x_.Length + 1];
            x[0] = 1;
            x_.CopyTo(x, 1);

            double v = 0;

            for (int i = 0; i < x.Length; i++)
                v += (double)x[i] * weights[i];

            double f = 0;

            f = 1 /(1 + (Math.Exp(-a * v)));

            if (f > 0)
                return 1;
            if (f == 0)
                return 0;
           
            return -1;            
        }
    }
}
